Vytvoreni komponenty za behu

Otázka od: Karel Pecinka

18. 11. 2004 1:09

Zdravim profiky,
 
v programu by se mi libilo vytvaret komponenty za behu tak, abych
nemusel predem znat typ ani vlastnika komponenty. Vse se dari az na to,
ze se mi nova komponenta nezaradi do seznamu Components vlastnika a to
ja potrebuji kvuli naslednemu nastavovani properties. Kdyz pouziju
Vlastnik.InsertComponent, vse se zda byt ok, ale po zavreni okna vyskoci
AV.
 
Poradte prosim kde by mohla byt chyba, uz se s tim drbu dele nez je
zdravo.
 
Diky Karel


Odpovedá: Ludek ZITA

18. 11. 2004 8:52

 On Behalf Of Karel Pecinka

> v programu by se mi libilo vytvaret komponenty za behu tak,
> abych nemusel predem znat typ ani vlastnika komponenty. Vse
> se dari az na to, ze se mi nova komponenta nezaradi do
> seznamu Components vlastnika a to ja potrebuji kvuli
> naslednemu nastavovani properties. Kdyz pouziju
> Vlastnik.InsertComponent, vse se zda byt ok, ale po zavreni
> okna vyskoci AV.

Ahoj.
Nastavujes tem komponentam parent ?

Ludek


Odpovedá: Jan Sebelik

18. 11. 2004 10:26

> v programu by se mi libilo vytvaret komponenty za behu tak, abych
> nemusel predem znat typ ani vlastnika komponenty. Vse se dari az na to,
> ze se mi nova komponenta nezaradi do seznamu Components vlastnika a to
> ja potrebuji kvuli naslednemu nastavovani properties. Kdyz pouziju
> Vlastnik.InsertComponent, vse se zda byt ok, ale po zavreni okna vyskoci
> AV.

E := TEdit.Create(AOwner);
// AOwner byva vetsinou formular (zpravidla self),
// ale muze to byt cokoli jineho (TComponent).
E.Left := ...
E.Top := ...
atd.
E.Parent := Panel1;
// Parent musi byt TWinControl

To musi fungovat.
(viz Delphi - Zakladni kurz)
Pokud vznika nejake AV, je pricina jinde.

Z tveho textu neni zrejme, zda spravne rozlisujes Owner (vlastnik, zadava se v
konstruktoru a nelze ho menit - readonly) a Parent (kontejner, do ktereho
TControl vkladam, lze ho pripadne i menit).

Pokud vim, ze chci vytvaret TEdit, je to jednoduche.
V opacnem pripade mohu pouzit napr. pole typu
ClassArray = array [0..2] of TControlClass = (TEdit, TLabel, TCheckBox);
a
C := ClassArray[i].Create()

nebo podle nazvu tridy - FindClass(AClassName),
predtim RegisterClasses.

Honza
====================================
= RNDr. Jan Sebelik - HAES
= Skolici a konzultacni stredisko pro vyvoj SW
= www.haes.cz
= Vojtiskova 321
= 507 81 Lazne Belohrad
= tel. 493 792 931 (mobil 776 347 735)
====================================


Odpovedá: Karel Pecinka

18. 11. 2004 11:13

Nastavuju, ale presto se neukaze s v kolekci Components svyho vlastnika.
To se stane az po InsertComponent, ale pak zase pri zavreni okna vyskoci
AV.
???
Cekal bych, ze nastavenim Parentu dojde k zarazeni do kolekce
komponenent automaticky.

> Ahoj.
> Nastavujes tem komponentam parent ?
>
> Ludek
>
>
>


Odpovedá: Vlastimil Burian

19. 11. 2004 14:48

>> Poradte prosim kde by mohla byt chyba, uz se s tim drbu dele nez je
> zdravo.

jestli myslis vlastnika jako "owner" tak to nestaci .. musis nastavit
parenta ...zatim


Odpovedá: Vlastimil Burian

23. 11. 2004 11:03

napis ten kod kterej je za tu neplechu zodpovednej a my najdem tu chybu


> Nastavuju, ale presto se neukaze s v kolekci Components svyho vlastnika.
> To se stane az po InsertComponent, ale pak zase pri zavreni okna vyskoci
> AV.
> ???